package cn.nhs.schedule.task;

import cn.nhs.schedule.common.Constants;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

/**
 这段代码是一个基于Spring框架的配置类，用于配置任务调度器（TaskScheduler）。
 在这段代码中，通过@Bean注解将一个名为"nhs-schedule-taskScheduler"
 的Bean定义为任务调度器。具体实现是使用了ThreadPoolTaskScheduler类，它是Spring框架提供的一个线程池任务调度器。
 */
@Configuration("nhs-schedule-schedulingConfig")
public class SchedulingConfig {

    @Bean("nhs-schedule-taskScheduler")
    public TaskScheduler taskScheduler() {

        /**
         setPoolSize方法设置线程池的大小，这里使用了一个名为"Constants.Global.schedulePoolSize"的常量作为线程池大小。
         setRemoveOnCancelPolicy方法设置是否在取消任务时从线程池中移除该任务。
         setThreadNamePrefix方法设置线程名称的前缀，这里设置为"BugstackMiddlewareScheduleThreadPool-"。
         */

        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(Constants.Global.schedulePoolSize);
        taskScheduler.setRemoveOnCancelPolicy(true);
        taskScheduler.setThreadNamePrefix("NhsScheduleThreadPool-");
        return taskScheduler;
    }

}
